find() returns an array and never throws. findOne() returns the entity or null. findOneOrFail() throws EntityNotFoundError if nothing matches — map this to NotFoundException in a global filter. findAndCount() returns a tuple for pagination. The Query Builder handles complex queries with joins, subqueries, and raw SQL that the find API cannot express.
find() — simple list queries with where, order, relations, skip, take options.
findOne() — fetch a single entity; always check for null before using the result.
findOneOrFail() — when not finding the entity is an error; map EntityNotFoundError to NotFoundException.
findAndCount() — pagination; returns count without a second query.
QueryBuilder — complex joins, subqueries, raw expressions, conditional where clauses, and aggregations.